/*
 * DrawController.h
 *
 *  Created on: Dec 17, 2011
 *      Author: rudi
 */

#ifndef DRAWCONTROLLER_H_
#define DRAWCONTROLLER_H_
#include <wx/wx.h>
#include <vector>
#include "IController.h"
#include "SmartPointer.h"
#include "Vehicle.h"

/**
 * Base interface for every drawing controller
 *
 * @see IController
 * @see StaticDrawController
 * @see DynamicDrawController
 * @see LogoDrawController
 * @author Rudolf Heszele heszele@gmail.com
 * @version 1.0
 * @since 2012-03-08
 */
class IDrawController: public IController
{
	public:
		IDrawController();
		virtual ~IDrawController();
		/**
		 * This method should return with the actual vehicle. The vehicle which is moving in the actual turn
		 *
		 * @return A SmartPointer to the actual vehicle
		 */
		virtual SmartPointer<Vehicle> getActualVehicle() const = 0;
		/**
		 * This method should return with the remote vehicle. The vehicle which is not moving in the actual turn
		 *
		 * @return A SmartPointer to the actual vehicle
		 */
		virtual SmartPointer<Vehicle> getRemoteVehicle() const = 0;
		/**
		 * This method should return the earlier positions of the actual vehicle
		 *
		 * @return A SmartPointer to a list of points, representing the earlier positions of the actual vehicle
		 */
		virtual SmartPointer<std::vector<wxPoint> > getActualVehicleArrows() = 0;
		/**
		 * This method should return the earlier positions of the remote vehicle
		 *
		 * @return A SmartPointer to a list of points, representing the earlier positions of the remote vehicle
		 */
		virtual SmartPointer<std::vector<wxPoint> > getRemoteVehicleArrows() = 0;
};

#endif /* DRAWCONTROLLER_H_ */
